package com.test.basic;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * 给定一个非空整数数组，
 * 除了某个元素只出现一次以外，其余每个元素均出现两次(只有一个数字出现了奇数次，其他均出现偶数次)。
 * 找出那个只出现了一次的元素。
 * 输入: [2,2,1]
 * 输出: 1
 */
public class OneTimeDemo {
    public static void main(String[] args) {
        OneTimeDemo oneTimeDemo = new OneTimeDemo();
        int[] a = new int[]{1, 1, 2, 3, 3,5,5,5,5};
        //System.out.println(oneTimeDemo.singleNumber(a);

        oneTimeDemo.singleNumberStrem(a);
    }

    public int singleNumber(int[] nums) {
        if (nums.length == 0) {
            return -1;
        }
        int res = 0;
        for (int num : nums) {
            res ^= num;
        }
        return res;
    }

    public void singleNumberStrem(int[] nums) {
        System.out.println(Arrays.stream(nums).max().getAsInt());
        System.out.println(Arrays.stream(nums).sum());

        List<Integer> list = Arrays.stream(nums).boxed().collect(Collectors.toList());
        Map<Integer, Long> collect = list.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));

        System.out.println(collect);
        for (Integer key : collect.keySet()) {
            if(collect.get(key) % 2 ==1 ){
                System.out.println("奇数个数的元素 ： " + key);
            }
        }
    }
}